# -*- coding: utf-8 -*-
# @Time    : 2024/7/29 16:37
# @Author  : yujiahao
# @File    : 65_fastapi_mount.py
# @description:子应用 - 挂载

from fastapi import FastAPI

# 创建主（顶层）FastAPI 应用
"""
在 FastAPI 中，当我们谈到“顶层应用”（或“主应用”）时，指的是主要的 FastAPI 应用实例，它作为整个应用程序的入口点和根应用。
这个顶层应用可以挂载其他独立的 FastAPI 应用（子应用）在特定的路径下，使得这些子应用在其路径下处理所有事务。
"""
app = FastAPI()


# 在主应用中定义一个路径操作
@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


# 创建一个子应用
# 子应用只是另一个标准 FastAPI 应用，但这个应用是被挂载"/subapi" 路径下的应用
subapi = FastAPI()


# 在子应用中定义一个路径操作
@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


# 挂载 FastAPI 应用（子应用）在顶层应用 app 中，挂载子应用 subapi。
# 挂载是指在特定路径中添加完全独立的应用，然后在该路径下使用路径操作声明的子应用处理所有事务。
# 可以通过这个看 http://127.0.0.1:8000/subapi/docs。
app.mount("/subapi", subapi)
